gcloud コマンドを Windows 上の PowerShell で実行すると 「can't find '__main__' module in ''」 というエラーが発生する (2022-11)
code:gcloud-on-powershell
PS > gcloud -v
C:\Users\xxxx\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\bundledpython\python.exe: can't find '__main__' module in ''
gcloud.cmd コマンドは問題なく動作した。 バージョン情報は以下の通り。
code:gcloud.cmd
PS > gcloud.cmd -v
Google Cloud SDK 410.0.0
bq 2.0.81
core 2022.11.11
gcloud-crc32c 1.0.0
gsutil 5.16
どうも、gcloud.ps1 の中で、python.exe に渡す引数がおかしいっぽい。
C:\Users\xxx\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.ps1 に対して、以下のような変更を行うととりあえず動くようにはなった。
code:gcloud.ps1.diff
--- gcloud.ps1 2022-11-24 01:51:44.033534600 +0900
+++ gcloud.fixed.ps1 2022-11-24 01:51:18.693597400 +0900
@@ -110,6 +110,10 @@
}
$run_args_array += (Join-Path $cloudsdk_root_dir 'lib\gcloud.py')
$run_args_array += $args
+# 配列の先頭の要素が空文字列になることがあり、その場合に以下のようなエラーが発生する。
+# C:\Users\xxx\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\bundledpython\python.exe: can't find '__main__' module in ''
+# 空文字列を配列から除くことで、このエラーを回避する。
+$run_args_array = $run_args_array -ne ""
if ($MyInvocation.ExpectingInput) {
$input | & "$cloudsdk_python" $run_args_array